# -*- coding: UTF-8 -*-
'''=================================================
@Project -> File   ：final-work -> fourier_test.py
@IDE    ：PyCharm
@Author ：Zhou Shuai
@Date   ：2022/4/26 15:39
@Desc   ：
=================================================='''
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.pylab import mpl
import pandas as pd
from scipy.fftpack import fft


mpl.rcParams['font.sans-serif'] = ['SimHei']  # 显示中文
mpl.rcParams['axes.unicode_minus'] = False  # 显示负号

df = pd.read_excel("Time_Voltage.xlsx")
T_array = []
for i in range(len(df.Time) - 1):
    # 遍历每行数据
    values = df.Time[i]
    T_array.append(values)
print(T_array)
print(len(df.Time))
V_array = []
for i in range(len(df.Voltage) - 1):
    # 遍历每行数据
    values = df.Voltage[i]
    V_array.append(values)
print(V_array)
print(len(df.Voltage))
Fs = len(df.Time) # 采样频率
Ts = 1 / Fs  # 采样区间
x = T_array
y = V_array

yy=fft(y)                     #快速傅里叶变换
yreal = yy.real               # 获取实数部分
yimag = yy.imag               # 获取虚数部分

yf=abs(fft(y))                # 取绝对值
yf1=abs(fft(y))/len(x)           #归一化处理
yf2 = yf1[range(int(len(x)/2))]  #由于对称性，只取一半区间

xf = np.arange(len(y))        # 频率
xf1 = xf
xf2 = xf[range(int(len(x)/2))]  #取一半区间


plt.subplot(221)
plt.plot(x[0:3176],y[0:3176])
plt.title('Original wave')

plt.subplot(222)
plt.plot(xf,yf,'r')
plt.title('FFT of Mixed wave(two sides frequency range)',fontsize=7,color='#7A378B')  #注意这里的颜色可以查询颜色代码表

plt.subplot(223)
plt.plot(xf1,yf1,'g')
plt.title('FFT of Mixed wave(normalization)',fontsize=9,color='r')

plt.subplot(224)
plt.plot(xf2,yf2,'b')
plt.title('FFT of Mixed wave)',fontsize=10,color='#F08080')

plt.show()